package com.zijie.demo2;

class Student {
    private String name;
    private int age;
    private static String classRoom;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    static {
        classRoom="软件1班";
    }
    //String方法重写。
    //对于你想输出一个对象的引用的值的时候，如果你没有自己写一个toString方法，那么就会调用Object这个类的方法
    //如果自己实现了，就调用自己的

    @Override//这个是注解，注解有很多种，这只是其中1种
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", gender='" + age + '\'' +
                '}';
    }

    public static void main(String[] args) {
        Student student=new Student("张三",18);
        System.out.println(student);
//        System.out.println("hah"+'d'+'s');//原来Java中字符串和字符可以拼接
    }
}
//public class Test2 {
//    //在静态方法中不能直接访问非静态方法
//    public static void main(String[] args) {
//        Student student1=new Student();
//        student1.show();
//        System.out.println("============================");
////        Student student=new Student(18,"张三");
////        student.show();
//    }
//}

//    //方法
//    public void show() {
//        System.out.println("姓名："+name+" 年龄："+age);
//    }

    //static修饰成员变量
    //由于static特性，我们可以写出更极端的代码
//    Student student=null;
//System.out.println(student.name);//空指针异常
//        System.out.println(student.classRome);
//                System.out.println(Student.classRome);

//static修饰成员方法、
//一切的非静态成员的调用都需要依赖于对象的引用才能调用

//        静态方法可以直接调用非静态的成员方法
//        静态方法内部不能够直接使用非静态的数据成员、方法，静态方法里面是不能使用this
//        普通成员方法内部可以使用静态的成员方法


//不建议在在构造方法中进行赋值，因为静态变量是所有对象共享的，每次new对象时都把static变量改了是不合适的
//构造方法是最后执行的
//非静态代码块--》在构造方法构造对象之前为成员变量赋值

